<?php
def("amicitia/arquitectura/","Accion");
def("amicitia/arquitectura/","Sesion");
def("amicitia/arquitectura/","Cabeceador");
def("amicitia/persistencia/","ServicioPersistencia");
def("amicitia/modelo/entidades/","Persona");

class UsuarioAccion implements Accion {
	
	const JUGADOR = "JUGADOR";
	const USUARIO = "usuario";
	const REDIR_USUARIO = "redirUsuario";
	const REDIR_USUARIO_AUTENTICACION = "redirUsuarioAutenticacion";
	const USUARIO_AUTENTICACION = "usuarioAutenticacion";
	const USUARIO_REGISTRO = "usuarioRegistro";
	
	private $nombre;
	private $alias;
	private $password;
	private $apellido;
	private $email;
	private $sexo;

	/** @)Recurso(tipo=normal,nivel=2) */
	public function hacer(){
		$jugador = Sesion::getSesion()->recobrarObjeto(self::JUGADOR);
		$this->nombre = $jugador->getNombre();
		$this->alias = $jugador->getAlias();
				
		return self::USUARIO;
	}
	
	/** @)Recurso(tipo=normal,nivel=1)
	 *  @)Transaccional */
	public function registrar(){
		$jugador = new Persona();
		$jugador->setAlias($this->getAlias());
		$jugador->setPassword($this->getPassword());
		$jugador->setNombre($this->getNombre());
		$jugador->setApellido($this->getApellido());
		$jugador->setEmail($this->getEmail());
		$jugador->setSexo($this->getSexo());
		
		ServicioPersistencia::registrarJugador($jugador);
		return self::REDIR_USUARIO_AUTENTICACION;
	}
	
	/** @)Recurso(tipo=normal,nivel=1) */
	public function registro(){
		return self::USUARIO_REGISTRO;
	}
	
	/** @)Recurso(tipo=normal,nivel=1)
	 *  @)Transaccional */
	public function autenticar(){
		$jugador = ServicioPersistencia::autenticarJugador($this->getAlias(),$this->getPassword());
		Sesion::getSesion()->guardarObjeto(self::JUGADOR,$jugador);
		return self::REDIR_USUARIO;
	}
	
	/** @)Recurso(tipo=normal,nivel=2) */
	public function salir(){
		Sesion::getSesion()->eliminarObjeto(self::JUGADOR);
		return self::REDIR_USUARIO_AUTENTICACION;
	}
	
	/** @)Recurso(tipo=normal,nivel=1) */
	public function autenticacion(){
		return self::USUARIO_AUTENTICACION;
	}

	public function setNombre($nombre) {
		$this->nombre = $nombre;
	}
	
	public function getNombre() {
		return $this->nombre;
	}
	
	public function setAlias($alias) {
		$this->alias = $alias;
	}
	
	public function getAlias() {
		return $this->alias;
	}
	
	public function setPassword($password) {
		$this->password = $password;
	}
	
	public function getPassword() {
		return $this->password;
	}
	
	public function setApellido($apellido) {
		$this->apellido = $apellido;
	}
	
	public function getApellido() {
		return $this->apellido;
	}
	
	public function setEmail($email) {
		$this->email = $email;
	}
	
	public function getEmail() {
		return $this->email;
	}
	
	public function setSexo($sexo) {
		$this->sexo = $sexo;
	}
	
	public function getSexo() {
		return $this->sexo;
	}
	
	public function usuarioEnSesion() {
		return $this->usuarioEnSesion;
	}

}
?>